import java.util.concurrent.atomic.AtomicInteger;

/**
 * 安全问题解决：
 * 1.在方法上加上synchronized关键字
 * 2.在关键的需要保证数据安全的地方加上：
 * synchronized(this){ 你的代码 }
 * 3.改变count的类型为：AtomicInteger
 *
 * synchroized 是 内部锁,它是可重入的。 JVM有一个计数机，获取一个锁，记一次数，释放一次锁，减一个锁
 *
 * Created by brss on 2018/3/24.
 */
public class Counter {

//    三个线程共享一个count变量
    private AtomicInteger count = new AtomicInteger(0);

    /**
     * synchronized 关键字效率低
     */

    public void add(){
        try {
            for (int i = 0; i< 200; i++){
                Thread.sleep(10);

                /*synchronized(this){
                    this.count++;
                    System.out.println(this.count);
                }*/
                System.out.println(count.incrementAndGet());
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}


